import request from '@/utils/request'

// 用户相关的API接口
export default {
    // ==================== 认证相关接口 ====================

    /**
     * 用户注册
     * @param {Object} registerDto 注册信息
     * @returns {Promise} 注册结果
     */
    register(registerDto) {
        return request({
            url: '/api/admin/register',
            method: 'post',
            data: registerDto
        })
    },

    /**
     * 用户登录
     * @param {Object} loginDto 登录信息
     * @returns {Promise} 登录结果
     */
    login(loginDto) {
        console.log('API login被调用', loginDto);
        // 确保请求格式符合后端要求
        const formattedData = {
            username: loginDto.username,
            password: loginDto.password
        };

        // 修改为正确的API路径，与后端Controller定义一致
        return request({
            url: '/api/admin/login',
            method: 'post',
            data: formattedData,
            headers: {
                'Content-Type': 'application/json'
            }
        });
    },

    /**
     * 刷新Token
     * @returns {Promise} 新Token
     */
    refreshToken() {
        return request({
            url: '/api/admin/refresh-token',
            method: 'post'
        })
    },

    /**
     * 退出登录
     * @returns {Promise} 退出结果
     */
    logout() {
        return request({
            url: '/api/admin/logout',
            method: 'post'
        })
    },

    // ==================== 用户管理接口 ====================

    /**
     * 分页查询用户列表
     * @param {number} pageNum 页码
     * @param {number} pageSize 每页数量
     * @param {Object} queryParams 查询参数
     * @returns {Promise} 用户列表
     */
    listUsers(pageNum = 1, pageSize = 10, queryParams = {}) {
        return request({
            url: '/api/admin/list',
            method: 'get',
            params: {
                pageNum,
                pageSize,
                ...queryParams
            }
        })
    },

    /**
     * 更新用户信息
     * @param {number} userId 用户ID
     * @param {Object} userData 用户数据
     * @returns {Promise} 更新结果
     */
    updateUser(userId, userData) {
        return request({
            url: `/api/admin/update/${userId}`,
            method: 'put',
            data: userData
        })
    },

    /**
     * 更新用户密码
     * @param {number} userId 用户ID
     * @param {string} newPassword 新密码
     * @returns {Promise} 更新结果
     */
    updatePassword(userId, newPassword) {
        return request({
            url: `/api/admin/update-password/${userId}`,
            method: 'put',
            params: { newPassword }
        })
    },

    /**
     * 删除用户
     * @param {number} userId 用户ID
     * @returns {Promise} 删除结果
     */
    deleteUser(userId) {
        return request({
            url: `/api/admin/delete/${userId}`,
            method: 'delete'
        })
    },

    /**
     * 根据ID查询用户
     * @param {number} userId 用户ID
     * @returns {Promise} 用户信息
     */
    getUserById(userId) {
        return request({
            url: `/api/admin/get/${userId}`,
            method: 'get'
        })
    },

    // ==================== 会话管理接口 ====================

    /**
     * 强制用户下线
     * @param {number} userId 用户ID
     * @param {string} reason 下线原因
     * @returns {Promise} 操作结果
     */
    forceLogout(userId, reason) {
        return request({
            url: `/api/admin/force-logout/${userId}`,
            method: 'post',
            params: { reason }
        })
    },

    /**
     * 获取用户在线设备信息
     * @param {number} userId 用户ID
     * @returns {Promise} 设备列表
     */
    getOnlineDevices(userId) {
        return request({
            url: `/api/admin/online-devices/${userId}`,
            method: 'get'
        })
    },

    /**
     * 获取用户登出统计
     * @param {number} userId 用户ID
     * @param {number} days 统计天数
     * @returns {Promise} 统计信息
     */
    getLogoutStatistics(userId, days = 7) {
        return request({
            url: `/api/admin/logout-statistics/${userId}`,
            method: 'get',
            params: { days }
        })
    },

    // ==================== 当前用户接口 ====================

    /**
     * 获取当前用户基本信息
     * @returns {Promise} 用户基本信息
     */
    getCurrentUserInfo() {
        return request({
            url: '/api/admin/info',
            method: 'get'
        })
    },

    /**
     * 获取当前用户的在线设备信息
     * @returns {Promise} 设备列表
     */
    getMyOnlineDevices() {
        return request({
            url: '/api/admin/my-online-devices',
            method: 'get'
        })
    },

    /**
     * 获取当前用户的登出统计
     * @param {number} days 统计天数
     * @returns {Promise} 统计信息
     */
    getMyLogoutStatistics(days = 7) {
        return request({
            url: '/api/admin/my-logout-statistics',
            method: 'get',
            params: { days }
        })
    },

    /**
     * 获取当前用户详细信息（包含角色权限）
     * @returns {Promise} 用户详细信息
     */
    getCurrentUserDetail() {
        return request({
            url: '/api/admin/getInfo',
            method: 'get'
        })
    },

    /**
     * 获取当前用户菜单路由
     * @returns {Promise} 菜单路由树
     */
    getMyRouters() {
        return request({
            url: '/api/admin/getRouters',
            method: 'get'
        })
    }
}